home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / font / SunLayoutEngine.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.5 KB  |  64 lines

  1. package sun.font;
  2.  
  3. import java.awt.geom.Point2D;
  4. import java.lang.ref.SoftReference;
  5. import java.security.AccessController;
  6. import java.util.HashMap;
  7. import sun.security.action.LoadLibraryAction;
  8.  
  9. public final class SunLayoutEngine implements GlyphLayout.LayoutEngine, GlyphLayout.LayoutEngineFactory {
  10.    private GlyphLayout.LayoutEngineKey key;
  11.    private static GlyphLayout.LayoutEngineFactory instance;
  12.    private SoftReference cacheref = new SoftReference((Object)null);
  13.  
  14.    private static native void initGVIDs();
  15.  
  16.    public static GlyphLayout.LayoutEngineFactory instance() {
  17.       if (instance == null) {
  18.          instance = new SunLayoutEngine();
  19.       }
  20.  
  21.       return instance;
  22.    }
  23.  
  24.    private SunLayoutEngine() {
  25.    }
  26.  
  27.    public GlyphLayout.LayoutEngine getEngine(Font2D var1, int var2, int var3) {
  28.       return this.getEngine(new GlyphLayout.LayoutEngineKey(var1, var2, var3));
  29.    }
  30.  
  31.    public GlyphLayout.LayoutEngine getEngine(GlyphLayout.LayoutEngineKey var1) {
  32.       HashMap var2 = (HashMap)this.cacheref.get();
  33.       if (var2 == null) {
  34.          var2 = new HashMap();
  35.          this.cacheref = new SoftReference(var2);
  36.       }
  37.  
  38.       Object var3 = (GlyphLayout.LayoutEngine)var2.get(var1);
  39.       if (var3 == null) {
  40.          var3 = new SunLayoutEngine(var1.copy());
  41.          var2.put(var1, var3);
  42.       }
  43.  
  44.       return (GlyphLayout.LayoutEngine)var3;
  45.    }
  46.  
  47.    private SunLayoutEngine(GlyphLayout.LayoutEngineKey var1) {
  48.       this.key = var1;
  49.    }
  50.  
  51.    public void layout(FontStrikeDesc var1, float[] var2, int var3, int var4, TextRecord var5, int var6, Point2D.Float var7, GlyphLayout.GVData var8) {
  52.       Font2D var9 = this.key.font();
  53.       FontStrike var10 = var9.getStrike(var1);
  54.       nativeLayout(var9, var10, var2, var3, var4, var5.text, var5.start, var5.limit, var5.min, var5.max, this.key.script(), this.key.lang(), var6, var7, var8);
  55.    }
  56.  
  57.    private static native void nativeLayout(Font2D var0, FontStrike var1, float[] var2, int var3, int var4, char[] var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, Point2D.Float var13, GlyphLayout.GVData var14);
  58.  
  59.    static {
  60.       AccessController.doPrivileged(new LoadLibraryAction("fontmanager"));
  61.       initGVIDs();
  62.    }
  63. }
  64.